from PIL import Image
import os

def sliding_window_crop(image_path, output_folder, crop_size=640, step=160):
    """
    使用滑动窗口对图片进行切片
    :param image_path: 输入图片路径
    :param output_folder: 输出切片保存的文件夹
    :param crop_size: 切片大小（默认640x640）
    :param step: 滑动步长（默认80）
    """
    # 打开图片
    image = Image.open(image_path)
    width, height = image.size

    # 创建输出文件夹
    os.makedirs(output_folder, exist_ok=True)

    count = 0  # 记录切片数量

    # 滑动窗口遍历
    for y in range(0, height - crop_size + 1, step):
        for x in range(0, width - crop_size + 1, step):
            # 切片
            crop = image.crop((x, y, x + crop_size, y + crop_size))
            # 保存切片
            crop.save(os.path.join(output_folder, f'crop_{count}.png'))
            count += 1

    print(f'切片完成，共生成 {count} 张切片')

# 示例使用
sliding_window_crop("image_with_white_border.jpg", "output_slices")
